const AdminBiz = require('../../../../store/admin_biz_config.js');
// 导入路径辅助模块，避免重复引用
const pathImport = require('../helpers/path_import.js');
const { pageHelper, cloudHelper, validate } = pathImport;
// 引入MobX绑定
import { createStoreBindings } from '../../../../../../miniprogram_npm/mobx-miniprogram-bindings/index';
import { adminStore } from '../../../../config/store_config.js';

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		isLoad: false
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function (options) {
		// 创建MobX绑定
		this.storeBindings = createStoreBindings(this, {
			store: adminStore,
			actions: ['isAdmin', 'getMgrDetail', 'editMgr']
		});
		
		if (!this.isAdmin(this, true)) return;
		if (!pageHelper.getOptions(this, options)) return;

		this._loadDetail();
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady: function () {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: function () {

	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide: function () {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function () {
		// 清理MobX绑定
		this.storeBindings.destroyStoreBindings();
	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: async function () {
		await this._loadDetail();
		wx.stopPullDownRefresh();
	},

	_loadDetail: async function () {
		if (!this.isAdmin(this, true)) return;

		let id = this.data.id;
		if (!id) return;

		// 使用MobX的getMgrDetail方法
		let mgr = await this.getMgrDetail(id);
		if (!mgr) {
			this.setData({
				isLoad: null
			})
			return;
		};

		this.setData({
			isLoad: true,

			// 表单数据 
			formName: mgr.ADMIN_NAME,
			formDesc: mgr.ADMIN_DESC,
			formPhone: mgr.ADMIN_PHONE,
 
			formPassword: ''
		});
	},

	/** 
	 * 数据提交
	 */
	bindFormSubmit: async function () {
		if (!this.isAdmin(this, true)) return;

		let data = this.data;

		// 数据校验 
		data = validate.check(data, AdminBiz.CHECK_FORM_MGR_EDIT, this);
		if (!data) return; 

		try {
			let adminId = this.data.id;
			data.id = adminId;

			// 使用MobX的editMgr方法
			const result = await this.editMgr(data);
			if (result) {
				let callback = () => {
					// 更新列表页面数据
					let node = {
						'ADMIN_NAME': data.name,
						'ADMIN_DESC': data.desc,
						'ADMIN_PHONE': data.phone,
					}
					pageHelper.modifyPrevPageListNodeObject(adminId, node);

					wx.navigateBack();
				}
				pageHelper.showSuccToast('修改成功', 1500, callback);
			}
		} catch (err) {
			console.log(err);
		}
	},
})